package com.yifeng.servlet;

import com.yifeng.common.Result;
import com.yifeng.factory.ServiceFactory;
import com.yifeng.service.NewsService;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/*
负责人：未知

功能：前台新闻搜索接口，提供基于关键词的新闻搜索功能

参数：无

返回值：无
*/
/**
 * 负责人：
 *
 * 功能：前台新闻搜索接口，接收 GET 或 POST 请求中的 keyword 参数，
 *       调用 NewsService 进行关键词模糊搜索，并返回 JSON 结果。
 *       该接口为公开接口，无需用户登录。
 */
@WebServlet("/news/search")
public class NewsSearchServlet extends BaseServlet {

    /*
    负责人：xiaoq

    功能：新闻业务逻辑服务实例，用于处理新闻搜索业务操作

    参数：无

    返回值：无
    */
    private final NewsService newsService = ServiceFactory.getNewsService();

    /*
    负责人：xiaoq

    功能：处理HTTP请求的核心方法，实现新闻关键词搜索功能

    参数：req - HTTP请求对象, resp - HTTP响应对象

    返回值：无
    */
    @Override
    protected void doHandle(HttpServletRequest req, HttpServletResponse resp) throws IOException {

        //获取关键词信息
        String keyword = req.getParameter("keyword");

        //校验关键词
        if(keyword==null || keyword.trim().isEmpty()){
            fail(resp,"搜素关键词不为空");
            return;
        }

        keyword = keyword.trim();

        //限制关键词长度
        if(keyword.length()>100) {
            fail(resp,"搜索关键词过长");
            return;
        }


        //调用服务层搜索
        try{
            Result result = newsService.searchNews(keyword);
            writeJson(resp,result);
        } catch(Exception e){
            fail(resp,"搜索新闻失败:"+e.getMessage());
        }

    }
}